# !/usr/bin/env python
# -*-coding:utf-8 -*-
"""
@Author : Ayao
@Time   : 2022/5/12
@File   : 最大连续1的个数.py
"""
from typing import List

"""
给定一个二进制数组 nums ， 计算其中最大连续 1 的个数。

 

示例 1：

输入：nums = [1,1,0,1,1,1]
输出：3
解释：开头的两位和最后的三位都是连续 1 ，所以最大连续 1 的个数是 3.
示例 2:

输入：nums = [1,0,1,1,0,1]
输出：2
 

提示：

1 <= nums.length <= 105
nums[i] 不是 0 就是 1.
相关标签
数组

作者：力扣 (LeetCode)
链接：https://leetcode.cn/leetbook/read/array-and-string/cd71t/
来源：力扣（LeetCode）
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
"""


class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        # slow = 0
        max, temp = 0, 0
        lens = len(nums)
        for fast in range(lens):
            if nums[fast] == 1:
                temp += 1
            if nums[fast] == 0:
                if temp > max:
                    max = temp
                temp = 0
        if temp > max:
            max = temp
        return max

    # def findMaxConsecutiveOnes2(self, nums: List[int]) -> int:
    #     slow, max, n = 0, 0, len(nums)
    #     for fast in range(n):
    #         if nums[fast] == 0:
    #             max = fast - slow
    #             slow = fast
    #         if nums[fast] == 1 and nums[slow] == 0:
    #             slow = fast
    #         # if (fast - slow) > max:
    #         #     max = fast - slow
    #
    #     return max

    def findMaxConsecutiveOnes3(self, nums: List[int]) -> int:
        max, temp = 0, 0
        for num in nums:
            if num == 1:
                temp += 1
                if max < temp:
                    max = temp
            else:
                temp = 0
        return max


print(Solution().findMaxConsecutiveOnes3([1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0]))
